﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Accesos;

namespace modUsuarios.Formularios
{
    public partial class frmCuenta : Form
    {

        private string varConexion;
        private string varCon = "Data Source=MARCO\\ESTRELLAROJA; User ID=sa; Password=123; Initial Catalog=AMDENET";//Direccion momentanea
        //direccion de prueba es una de la conexiones directas
        private string varPermisos = "";//Datos de los permisos q van a la base de datos
        private Accesos.ClasesL.clsLocal auxCls = new Accesos.ClasesL.clsLocal();
        private string Clave;
        private bool vgloBandera = true; 
        

        public frmCuenta()
        {
            InitializeComponent();
        }

        public frmCuenta(string Con)
        {
            InitializeComponent();
            varConexion = Con;
        }

     
        private void lklImagen_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            metImagen(pbxImagen);
        
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void metValidarText()
        {
            if (txtNomUS.Text.Length >= 1 && txtNickUS.Text.Length >= 1 && txtCorreoUS.Text.Length >= 1 && txtContraseña2US.Text.Length >= 1)
                btnIngresoCuentaUS.Enabled = true;
            else
                btnIngresoCuentaUS.Enabled = false;
        }

        private void frmCuenta_Load(object sender, EventArgs e)
        {
            metActualizarDatos();
        }

        private void metActualizarDatos()
        {
            Accesos.Clases.Usuarios.clsUsuario auxClas = new Accesos.Clases.Usuarios.clsUsuario(varCon);
            auxClas.metMostrarGrupos();//Catalogo de inicio remplazo.var conexion
            auxClas.metActivaMostrarD(this.coleccionDeDatos1);
            btnIngresoCuentaUS.Enabled = false;
        }

        private void btnAceptarCuentaCco_Click(object sender, EventArgs e)
        {
            metLimpiar();
        }

        private void metLimpiar()
        {
             //Limpiar de manera rapida

            foreach (Control c in this.Controls)
            {

                if (c is TextBox)
                {

                    c.Text = "";

                }

            }
            this.txtNomUS.Focus();

            
        }



        private void btnNuevaCuentaCco_Click(object sender, EventArgs e)
        {
            Accesos.Clases.Usuarios.clsUsuario  auxCls = new Accesos.Clases.Usuarios.clsUsuario(varCon);
            auxCls.metIngresarDatos(txtCodigoGR.Text, txtNomUS.Text, txtNickUS.Text, txtContraseña1US.Text, Accesos.ClasesL.clsLocal.Image2Bytes(pbxImagen.Image),txtCorreoUS.Text);
            coleccionDeDatos1.Clear();
            metActualizarDatos();
            
           
        }

        private void linNuevaCuenta_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            tabGrupo.Show();
            grpAdministrarCU.Hide();
            grpCuentasIndividuales.Hide();

        }
        /// <summary>
        /// /////////////////////////////////////////////
     /////////////////////////////////////////////////////
        private void linCamImagen_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Accesos.Clases.Permisos.clsPermisos auxUsuarios = new Accesos.Clases.Permisos.clsPermisos(varCon);
            txtCodigo.Text = auxCls.GeneracionClaves("P",auxUsuarios.metConteoPermisos());
            tabGrupo.Hide();
            grpAdministrarCU.Show();
            grpCuentasIndividuales.Hide();
            Accesos.Clases.Usuarios.clsUsuario auxCls1 = new Accesos.Clases.Usuarios.clsUsuario(varCon);
            auxCls1.metMostrarAllUsuarios(this.coleccionDeDatos1);
            Clave = txtClaveActualCU.Text;
            txtClaveActualCU.Text = "";

           

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Accesos.Clases.Permisos.clsPermisos auxPer = new Accesos.Clases.Permisos.clsPermisos(varCon);
            auxPer.metIngresarDatos(txtCodigo.Text,txtNombrePer.Text,txtDetalle.Text,txtModPermisos.Text);
        }

      

        private void metAccesoCoherente(KeyPressEventArgs e)
        {
            //Metodo de control de espacios para que los ingresos de los espacios sean coherentes
            //Este metodo trabaja directamente con la clase local
            ClasesLocales.clsControl auxControl = new ClasesLocales.clsControl();
            auxControl.metSoloLetras(e, vgloBandera);
            vgloBandera = auxControl.metControlarEspacios(e, vgloBandera);//Control de espacios
            vgloBandera = auxControl.metPrecionarEspacio(e, vgloBandera);//Controla elk regreso a la variable original de la badera para el control de espacios
            
        }


        private void metAccesoCoherenteTo(KeyPressEventArgs e)
        {
            //Metodo de control de espacios para que los ingresos de los espacios sean coherentes
            //Este metodo trabaja directamente con la clase local
            ClasesLocales.clsControl auxControl = new ClasesLocales.clsControl();
            auxControl.metSinEspacios(e, vgloBandera);

        }

        private void txtNomUS_KeyUp(object sender, KeyEventArgs e)
        {
           metValidarText();
        }

        private void txtNomUS_KeyDown(object sender, KeyEventArgs e)
        {
            metValidarText();
        }

   

     

        private void metControl1()
        {
            if (chbFila1.Checked == true)
            {
                chbFila1_1.Checked = true;
                chbFila1_2.Checked = true;
                chbFila1_3.Checked = true;
                chbFila1_4.Checked = true;

            }
            else
            {
                chbFila1_1.Checked = false;
                chbFila1_2.Checked = false;
                chbFila1_3.Checked = false;
                chbFila1_4.Checked = false;
              
            }            
        }

        private void metControl11()
        {
            if (chbFila1_1.Checked == true && chbFila1_2.Checked == true && chbFila1_3.Checked == true && chbFila1_4.Checked == true)
                chbFila1.Checked = true;
            else
                chbFila1.Checked = false;
        }

      

        private void chbFila1_2_Click(object sender, EventArgs e)
        {
            metControl11();
        }

        private void chbFila1_Click(object sender, EventArgs e)
        {
            metControl1();
        }


        //Segunda fila de permisos
        private void metControl2()
        {
            if (chbFila2.Checked == true)
            {
                chbFila2_1.Checked = true;
                chbFila2_2.Checked = true;
                chbFila2_3.Checked = true;
                chbFila2_4.Checked = true;

            }
            else
            {
                chbFila2_1.Checked = false;
                chbFila2_2.Checked = false;
                chbFila2_3.Checked = false;
                chbFila2_4.Checked = false;

            }
        }

        private void metControl22()
        {
            if (chbFila2_1.Checked == true && chbFila2_2.Checked == true && chbFila2_3.Checked == true && chbFila2_4.Checked == true)
                chbFila2.Checked = true;
            else
                chbFila2.Checked = false;
        }

        //Tercera fila de permisos

        private void metControl3()
        {
            if (chbFila3.Checked == true)
            {
                chbFila3_1.Checked = true;
                chbFila3_2.Checked = true;
                chbFila3_3.Checked = true;
                chbFila3_4.Checked = true;

            }
            else
            {
                chbFila3_1.Checked = false;
                chbFila3_2.Checked = false;
                chbFila3_3.Checked = false;
                chbFila3_4.Checked = false;

            }
        }

        private void metControl33()
        {
            if (chbFila3_1.Checked == true && chbFila3_2.Checked == true && chbFila3_3.Checked == true && chbFila3_4.Checked == true)
                chbFila3.Checked = true;
            else
                chbFila3.Checked = false;
        }

        //Cuarta fila de permisos

        private void metControl4()
        {
            if (chbFila4.Checked == true)
            {
                chbFila4_1.Checked = true;
                chbFila4_2.Checked = true;
                chbFila4_3.Checked = true;
                chbFila4_4.Checked = true;

            }
            else
            {
                chbFila4_1.Checked = false;
                chbFila4_2.Checked = false;
                chbFila4_3.Checked = false;
                chbFila4_4.Checked = false;

            }
        }

        private void metControl44()
        {
            if (chbFila4_1.Checked == true && chbFila4_2.Checked == true && chbFila4_3.Checked == true && chbFila4_4.Checked == true)
                chbFila4.Checked = true;
            else
                chbFila4.Checked = false;
        }

        //Quinta fila de permisos
        // de aqui en adelante el crecimiento de las filas son de exclusivo ingreso del desarrollador

        private void metControl5()
        {
            if (chbFila5.Checked == true)
            {
                chbFila5_1.Checked = true;
                chbFila5_2.Checked = true;
                chbFila5_3.Checked = true;
                chbFila5_4.Checked = true;

            }
            else
            {
                chbFila5_1.Checked = false;
                chbFila5_2.Checked = false;
                chbFila5_3.Checked = false;
                chbFila5_4.Checked = false;

            }
        }

        private void metControl55()
        {
            if (chbFila5_1.Checked == true && chbFila5_2.Checked == true && chbFila5_3.Checked == true && chbFila5_4.Checked == true)
                chbFila5.Checked = true;
            else
                chbFila5.Checked = false;
        }

        private void chbFila2_Click(object sender, EventArgs e)
        {
            metControl2();
        }

        private void chbFila2_1_Click(object sender, EventArgs e)
        {
            metControl22();
        }

        private void chbFila3_Click(object sender, EventArgs e)
        {
            metControl3();
        }

        private void chbFila3_1_Click(object sender, EventArgs e)
        {
            metControl33();
        }

        private void chbFila4_Click(object sender, EventArgs e)
        {
            metControl4();
        }

        private void chbFila4_1_Click(object sender, EventArgs e)
        {
            metControl44();
        }

        private void chbFila5_Click(object sender, EventArgs e)
        {
            metControl5();
        }

        private void chbFila5_1_Click(object sender, EventArgs e)
        {
            metControl55();
        }

        private void btnAceptarPer_Click(object sender, EventArgs e)
        {
            txtModPermisos.Clear();
            varPermisos = "";
            metCodificarPermisos();
        }
        //Aqui se coloca los permisos en forma de codigo en la base de datos dependiendo de lo seleccionado
        private void metCodificarPermisos()
        {
            if (chbFila1.Checked == true)
                varPermisos = varPermisos + "100 ";
            else
            {
                if (chbFila1_1.Checked == true)
                    varPermisos = varPermisos + "101 ";
                if (chbFila1_2.Checked == true)
                    varPermisos = varPermisos + "102 ";
                if (chbFila1_3.Checked == true)
                    varPermisos = varPermisos + "103 ";
                if (chbFila1_4.Checked == true)
                    varPermisos = varPermisos + "104 ";

            }


            if (chbFila2.Checked == true)
                varPermisos = varPermisos + "200 ";
            else
            {
                if (chbFila2_1.Checked == true)
                    varPermisos = varPermisos + "201 ";
                if (chbFila2_2.Checked == true)
                    varPermisos = varPermisos + "202 ";
                if (chbFila2_3.Checked == true)
                    varPermisos = varPermisos + "203 ";
                if (chbFila2_4.Checked == true)
                    varPermisos = varPermisos + "204 ";

            }

            if (chbFila3.Checked == true)
                varPermisos = varPermisos + "300 ";
            else
            {
                if (chbFila3_1.Checked == true)
                    varPermisos = varPermisos + "301 ";
                if (chbFila3_2.Checked == true)
                    varPermisos = varPermisos + "302 ";
                if (chbFila3_3.Checked == true)
                    varPermisos = varPermisos + "303 ";
                if (chbFila3_4.Checked == true)
                    varPermisos = varPermisos + "304 ";

            }

            if (chbFila4.Checked == true)
                varPermisos = varPermisos + "400 ";
            else
            {
                if (chbFila4_1.Checked == true)
                    varPermisos = varPermisos + "401 ";
                if (chbFila4_2.Checked == true)
                    varPermisos = varPermisos + "402 ";
                if (chbFila4_3.Checked == true)
                    varPermisos = varPermisos + "403 ";
                if (chbFila4_4.Checked == true)
                    varPermisos = varPermisos + "404 ";

            }


            if (chbFila5.Checked == true)
                varPermisos = varPermisos + "500 ";
            else
            {
                if (chbFila5_1.Checked == true)
                    varPermisos = varPermisos + "501 ";
                if (chbFila5_2.Checked == true)
                    varPermisos = varPermisos + "502 ";
                if (chbFila5_3.Checked == true)
                    varPermisos = varPermisos + "503 ";
                if (chbFila5_4.Checked == true)
                    varPermisos = varPermisos + "504 ";

            }

            txtModPermisos.Text = varPermisos;

        }

        private void btnCrearGrupo_Click(object sender, EventArgs e)
        {
            frmGrupos auxfrm = new frmGrupos(varCon);
            auxfrm.ShowDialog();
        }

        private void likAsignar_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            grpCuentasIndividuales.Show();
            tabGrupo.Hide();
            grpAdministrarCU.Hide();
            Accesos.Clases.Usuarios.clsUsuario auxCls = new Accesos.Clases.Usuarios.clsUsuario(varCon);
            auxCls.metCuentaActiva(this.coleccionDeDatos1, "Marc", "321");

           
        }

        private void tabPage3_Click(object sender, EventArgs e)
        {
           
        }

        private void groupBox5_Enter(object sender, EventArgs e)
        {

        }

        private void tabPage3_RegionChanged(object sender, EventArgs e)
        {
           
        }

        private void tabPage3_Scroll(object sender, ScrollEventArgs e)
        {
            
        }

        private void tabPage3_Enter(object sender, EventArgs e)
        {
            Accesos.Clases.Grupos.clsGrupos auxGrupo = new Accesos.Clases.Grupos.clsGrupos(varCon);
            txtCodGr.Text = auxCls.GeneracionClaves("G", auxGrupo.metConteoGrupo());
            Accesos.Clases.Permisos.clsPermisos auxPer = new Accesos.Clases.Permisos.clsPermisos(varCon);
            auxPer.metMostrarPermiso();
            auxPer.metActivaPermiso(this.coleccionDeDatos1);
        }

        private void btnAceptarGr_Click(object sender, EventArgs e)
        {
            Accesos.Clases.Grupos.clsGrupos auxGr = new Accesos.Clases.Grupos.clsGrupos(varCon);
            auxGr.metIngresarDatos(txtCodGr.Text,txtCodPer.Text,txtNomGr.Text,txtDesGr.Text,txtInfGr.Text);
        }

        private void groupBox3_Enter(object sender, EventArgs e)
        {
              
        }

        private void cmbTipoCuentaCco_Click(object sender, EventArgs e)
        {
            //grpGruposUs.Enabled=true;
            
        }

        private void comboBox1_Click(object sender, EventArgs e)
        {
            grpGruposUs.Enabled = false;
           
        }

        private void btnAceptarCU_Click(object sender, EventArgs e)
        {
            string var,var2;
            if (chbAceptarCambioCU.Checked == true)
                var = txtCodGrupoNueCU.Text;
            else
                var = txtCodGrupoActualCU.Text;

            if (txtClaveActualCU.Text.Length > 0 || txtClaveNuevaCU.Text.Length > 0)
                var2 = txtClaveNuevaCU.Text;
            else
                var2 = Clave;          

            if (txtClaveActualCU.Text == txtClaveNuevaCU.Text)
            {
                Accesos.Clases.Usuarios.clsUsuario auxUs = new Accesos.Clases.Usuarios.clsUsuario(varCon);
                auxUs.metActualizarDatos(txtCodCuentaCU.Text, var, txtNomProCU.Text, cmbNickCU.Text, cmbEstNueCU.Text, var2, txtObservacionesCU.Text, Accesos.ClasesL.clsLocal.Image2Bytes(pbxActImagenCU.Image), txtMailCU.Text);
            }
            else
                MessageBox.Show("Las claves no coinciden, ingreselas de nuevo.");
        }

        private void metImagen(PictureBox mas)
        {
            //metodo de seleccion de imagen 
            OpenFileDialog Abrir = new OpenFileDialog();
            Abrir.Filter = "JPeg Image|*.jpg";//tipo de achivo que puede buscar
            Abrir.Title = "Seleccion de Imagen de perfil";
            Abrir.RestoreDirectory = true;
            if (Abrir.ShowDialog() == DialogResult.OK)
                mas.Image = Image.FromStream(Abrir.OpenFile());//La imagen se dirige hacia el picture box
            // que ingresa como parametro
        }

        private void lnkElegirImagenCU_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            metImagen(pbxActImagenCU);
        }

        private void pbxActImagenCU_Click(object sender, EventArgs e)
        {
            metImagen(pbxActImagenCU);
        }

        private void btnAceptarCambioAC_Click(object sender, EventArgs e)
        {
            string var, var2;
            if (chbCambioGrupoAc.Checked == true)
                var = txtCodGrupoNueAc.Text;
            else
                var = txtCodGrupoActAc.Text;

            if (txtContarseña1Ac.Text.Length > 0 || txtContraseña2Ac.Text.Length > 0)
                var2 = txtClaveNuevaCU.Text;
            else
                var2 = Clave;



            if (txtContarseña1Ac.Text == txtContraseña2Ac.Text)
            {
                Accesos.Clases.Usuarios.clsUsuario auxUs = new Accesos.Clases.Usuarios.clsUsuario(varCon);
                auxUs.metActualizarDatos(txtCodCuentaAc.Text, var, txtNomCuentaAc.Text, txtNickAc.Text, "Activo", var2, txtObservacionesAc.Text, Accesos.ClasesL.clsLocal.Image2Bytes(pbxPinturaAc.Image), txtMailAc.Text);
            }
            else
                MessageBox.Show("Las claves no coinciden, ingreselas de nuevo.");
        }


        private void pbxPinturaAc_Click(object sender, EventArgs e)
        {
            metImagen(pbxPinturaAc);
        }

        private void label22_Click(object sender, EventArgs e)
        {

        }

        private void chbFila1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void pbxImagen_Click(object sender, EventArgs e)
        {
            metImagen(pbxImagen);
        }

        private void txtNickUS_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtNomUS_KeyPress(object sender, KeyPressEventArgs e)
        {
            metAccesoCoherente(e);
        }

        private void txtNickUS_KeyPress(object sender, KeyPressEventArgs e)
        {
            metAccesoCoherenteTo(e);
        }

        private void txtContraseña2US_KeyPress(object sender, KeyPressEventArgs e)
        {
            metAccesoCoherenteTo(e);
            if (!(char.IsLetter(e.KeyChar) || char.IsNumber(e.KeyChar)))
                tolAyudaCuenta.Show("Solo se permite el ingreso de numeros o letras",txtContraseña2US,3500);
        }

        private void btnCancelarCco_Click(object sender, EventArgs e)
        {

        }

        private void grpPermisos_Enter(object sender, EventArgs e)
        {
            Accesos.Clases.Grupos.clsGrupos auxGrupo = new Accesos.Clases.Grupos.clsGrupos(varCon);
            txtCodGr.Text = auxCls.GeneracionClaves("G", auxGrupo.metConteoGrupo());
            Accesos.Clases.Permisos.clsPermisos auxPer = new Accesos.Clases.Permisos.clsPermisos(varCon);
            auxPer.metMostrarPermiso();
            auxPer.metActivaPermiso(this.coleccionDeDatos1);

        }

        private void tabPage1_Click(object sender, EventArgs e)
        {
            tabGrupo.Show();
            grpAdministrarCU.Hide();
            grpCuentasIndividuales.Hide();
        }

        private void tabPage1_Enter(object sender, EventArgs e)
        {
            Accesos.Clases.Permisos.clsPermisos auxUsuarios = new Accesos.Clases.Permisos.clsPermisos(varCon);
            txtCodigo.Text = auxCls.GeneracionClaves("P", auxUsuarios.metConteoPermisos());
            Accesos.Clases.Grupos.clsGrupos auxGrupo = new Accesos.Clases.Grupos.clsGrupos(varCon);
            txtCodGr.Text = auxCls.GeneracionClaves("G", auxGrupo.metConteoGrupo());
            Accesos.Clases.Permisos.clsPermisos auxPer = new Accesos.Clases.Permisos.clsPermisos(varCon);
            auxPer.metMostrarPermiso();
            auxPer.metActivaPermiso(this.coleccionDeDatos1);
        }

        private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)
        {

        }

        private void btnAcptarGr_Click(object sender, EventArgs e)
        {
            Accesos.Clases.Grupos.clsGrupos auxGr = new Accesos.Clases.Grupos.clsGrupos(varCon);
            auxGr.metIngresarDatos(txtCodGr.Text, txtCodPer.Text, txtNomGr.Text, txtDesGr.Text, txtInfGr.Text);
        }

        private void cmbTipoCuentaCco_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {

        }

    }
}
